package outline;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.Timer;
import javax.swing.border.EmptyBorder;

public class J09_HelloSwingStatusBar extends JFrame {

	private JPanel contentPane;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					J09_HelloSwingStatusBar frame = new J09_HelloSwingStatusBar();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public J09_HelloSwingStatusBar() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);
		
		JLabel label = new JLabel();
		label.setHorizontalAlignment(SwingConstants.RIGHT);
		label.setText(getSysDate()); 
		// 현재 날짜/시간을 레이블에 출력
		// 단, 현재 날짜/시간이 한번만 표시되기 떄문애ㅔ
		// Timer를이용해서 1초마다 getSysDate()를
		// 호출하도록 만들어야함
		// 리스너 클래스에 대한 객체를 생
		TimerListener updater = new TimerListener(label);
		// 초 간격으로 이벤트를 생성하고
		// 그것을 updater라는 리스너가 처리함
		Timer timer = new Timer(1000, new TimerListener(label));
		// 1초가 지날때마다 이벤트가 발생하고
		// 그 이벤트를 timeupdater 라는 리스너가 처리
		timer.start();
		// 타이머 작동~
		
		contentPane.add(label, BorderLayout.SOUTH);
	}
	// 현재 날짜/시간 알아내기
	public static String getSysDate(){
		//교재 314 참고 (Calendar)
		//Date sysdate = new Date();
		//return sysdate.toString();
		//날짜와 시간을 자국민이 이해하기 쉬운
		//형식으로 지정하는 것이 좋음
		//따라서,SimpleDateFormat을 이용함
		Date sysdate = new Date();
		String fmt ="YYYY년 MM월 dd일 E요일 a hh:mm:ss";
		return new SimpleDateFormat(fmt).format(sysdate);
	}

}//class

// 1초마다 발생하는 이벤트를 처리할 리스너 
class TimerListener implements ActionListener{
	private JLabel label = null;
	public TimerListener(JLabel label) {
		this.label = label;
	}
	@Override
	public void actionPerformed(ActionEvent e) {
	label.setText(J09_HelloSwingStatusBar.getSysDate());
	// 상태표시줄에 현재 날짜/시간을 표시
		
	}
	
	
}
		
		
		